#include "stm32f10x.h"                  // Device header
#include "OLED.h"
#include "Delay.h"

/*窗口看门狗实现*/

int main(void)
{
	OLED_Init();
	OLED_ShowString(1, 1, "WWDG Test");

	if (RCC_GetFlagStatus(RCC_FLAG_WWDGRST) == SET)
	{	
		RCC_ClearFlag();							//这里要先清除标志位，防止复位上电之后因WWDG标志位还在而导致误判

		OLED_ShowString(2, 1, "WWDG");
		Delay_ms(1000);
		OLED_ShowString(2, 1, "    ");
	}
	else
	{
		OLED_ShowString(2, 1, "RST");
		Delay_ms(1000);
		OLED_ShowString(2, 1, "   ");

	}		
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);

	WWDG_SetPrescaler(WWDG_Prescaler_8);
	//下面配置的值都偏大了一丢丢 有误差嘛 要理解！
	WWDG_SetWindowValue(0x40 | 22);						//窗口时间10ms
	WWDG_Enable(0x40 | 32);								//超时时间30ms 这里直接喂狗了

	while (1)
	{
		Delay_ms(20);
		WWDG_SetCounter(0x40 | 32);					//喂狗
	}
}
